AWS Lambda是一个用于部署
代码、管理服务以及监控轻量级服务运行状态的细粒度方法。
使用方法
1.AWS Lambda 代码的版本控制与其他所有应用程序的都是一样的。
AWSLambda控制台的快速JavaScript函数编程方式是广受程序员青睐的文本编辑器或行内编辑器,这一点是颇具吸引力的。当然,当用户通过函数版本进行应用概念测试以及迭代运行时,这个脚本程序就可以在开发环境中正常运行。但是,它并不适于部署生产代码。管理人员应当拥有函数和部署包的版本控制副本,当用户希望使用这些副本来包括附属库时,尤是如此。
2.AWS Lambda在条件许可的情况下,应再次使用身份验证和访问管理策略。AWS Lambda 的函数需要调用和执行角色;而其执行角色需要一个访问和信任的策略。访问策略会授予用户操作资源的权限——即,从简单存储服务(
S3)bucket中进行读或写操作的权利。执行策略会指定由谁来承担相关角色。再次使用之前在其它程序中已设定并使用的访问策略是合乎逻辑的。但是,这里要特别注意过度特权。如果你的函数只需要从S3 bucket中读取数据,那么也就无须向其赋予写操作权限的访问策略。尽管AWS Lambda函数是很小,但是管理人员仍然需要考虑其安全性的最佳实践,例如最小特权原则。
3.删除不再需要的AWS Lambda函数。通过使用版本控制代码,管理人员可以从其中的版本中恢复过来。当用户的函数完成运行时,请不要忘记调用
context.done函数。如果用户没有调用这个函数,那么用户的函数将继续运行并随之产生额外的费用。
4.监控AWS Lambda 函数的调用和执行。通过使用CloudWatch,管理人员能够跟踪请求时间段、请求计数以及执行错误计数。他们还可以通过
AWS的管理控制台、CloudWatch或者AWS命令行来查看 Lambda CloudWatch的参数指标。CloudWatch还可以帮助进行代码调试——在函数中插入记录语句、运行函数以及之后在CloudWatch日志文件中查看程序的运行结果。
出现背景
AWS Lambda首次亮相的新进展是Alexa Skill Kit API,该API可以做到开发者在Echo beta程序中能够鼓捣的一切。Echo采集语音识别并拥有一个非常自然的文本到语音的转换程序。但它并不是完美的,它缺乏一些最终用户可能想要的基本任务。
ASK API让开发人员可以编写软件响应用户在Echo上的输入并将结果以语音的方式输出给用户。使用
ASK,开发者需要一个
Echo的API来调用函数,但是他们也可以使用AWS Lambda。那意味着如果该软件没有被使用,那就没有开销。
服务功能
使用MySQL、Lambda和浏览器应用程序
如果开发人员正在使用Lambda 服务、AWS SDK以及
Java脚本程序来开发无服务器的网络应用程序,使用DynamoDB作为后端数据库,那么就不应该有任何问题。但是,为了使用一个诸如MySQL或Amazon Aurora这样的
关系型数据库,可创建一个桥型应用程序或者打开RDS MySQL实例。这可以打开MySQL,一个用于实现零日漏洞的臭名昭著目标以防进一步的攻击。一般情况下,在一个开发端口上运行MySQL实例是一个糟糕的安全措施。
但是,运行Lambda服务是一个伟大的方法,它去除了一个后端,用户就不需要编写验证MySQL的中间层,并为在Lambda外进行访问提供了一个安全的方法。幸运的是,将Lambda功能置于VPC中可让开发人员配置安全组并确保MySQL集群只使用特定Lambda功能。此举可显著减少曝光并确保MySQL实例得到合适保护。
确保只有授权用户能够访问Lambda功能仍然是非常重要的,但是很幸运使用亚马逊Cognito和IAM角色可以很容易地确保其安全性。
针对Lambda功能的调度功能
另一项改善就是提供了调度AWS Lambda功能的能力。这使得开发人员能够定期允许后台任务以取代使用任务实例或诸如Cloud Cron之类的工具来运行脚本程序。Lambda服务还增加了它的最长运行时间至五分钟。
例如,如果一家公司需要定期从博客网站读取RSS订阅,那么他们就可以在AWS Lambda中通过触发一个自动调度功能来排队读取博客列表中的所有待读取订阅内容,从而实现这一功能。该公司就可以安排主机功能每隔若干个小时从DynamoDB读取数据,然后针对每一个博客触发Lambda函数读取订阅。
由于Lambda对设置了100个并发函数调用的限制,该公司就需要首先对这些调用进行排队处理。但是一旦AWS取消了这一限制,那么用户就可以通过主机调度函数触发这些调用。
支持Python
AWS Lambda支持Python,如果你正在现有环境中使用Python,那么这一点是非常重要的。但是,这也暗示AWS将在未来增加对额外编程语言的支持——甚至可能是对Docker的支持。